package com.dragon.modules.yuegou.service.merchant;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.common.web.PageRequest;
import com.dragon.modules.yuegou.entity.merchant.UserEntity;
import com.dragon.modules.yuegou.enums.merchant.UserMerchantType;
import com.dragon.modules.yuegou.model.merchant.User;
import com.dragon.modules.yuegou.query.merchant.UserQuery;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 商户用户表 服务接口
 *
 * @author pbuilder generated
 * @date 2019-04-28 15:07:22
 * @version 2.0
 */
public interface UserService extends IService<UserEntity> {

	Map<String, User> getByIds(Collection<String> ids);

	/**
	 * 分页查询用户
	 */
	IPage<User> list(PageRequest page, UserQuery query);

	/**
	 * 重置密码
	 */
	boolean repwd(String oldPwd, String newPwd, String repeatPwd, String merchantUserId);

	/**
	 * 找回密码
	 */
	boolean findPwd(String mobile, String newPwd);

	/**
	 * 初次设置提现密码
	 */
	boolean setWithdrawPwd(String merchantId, String firstPwd);

	/**
	 * 重置提现密码
	 */
	boolean resetWithdrawPwd(String merchantId, String oldPwd, String newPwd, String repeatPwd);

	/**
	 * 设置语音播报开关
	 */
	void voiceCof(String merchantUserId,Integer voiceCof);

	/**
	 * 根据商户，商圈ID，查找用户
	 */
	User getUser(String merchantId, String busdId);

	/**
	 * 根据用户名密码登录商户
	 */
	User loginByUsername(String username, String password);

	/**
	 * 根据openId登录商户
	 */
	User loginByOpenId(String openid, String appId);

	/**
	 * 根据手机号密码登录商户
	 */
	User loginByMobile(String mobile, String password);
	
	/**
	 * 根据手机号登录
	 */
	User loginByMobile(String mobile);

	/**
	 * 根据用户ID获取商户用户信息
	 */
	User getBySysUserId(String userId);

	/**
	 * 创建商户用户
	 */
	void createMerchantUser(String merchantId, String username, String account, String busdId, String password,
			UserMerchantType type);

	/**
	 * 根据商户ID查询商户用户
	 * 
	 * @return
	 */
	List<User> merchantUserList(String merchantId);

	/**
	 * 商户账号升级为主账号
	 * @param merchantId 商户ID
	 * @param merchantUserId 商户用户ID
	 */
	void upgradeAccount(String merchantId, String merchantUserId);

	/**
	 * 根据商圈ID查询商户主账号
	 *
	 * @return
	 */
	List<User> busdUserList(String busdId);
}